home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <iocslib.h>
-
- int optime(void op_main(void), void op_init(int count), void op_tini(void), int count);
- void op_main(void);
- void op_init(int count);
- void op_tini(void);
- extern char op_name[];
-
- int ssp;
-
- void main(int argc, char *argv[])
- {
- double mpu_clock = 10.0;
- int count = 1000;
- int result;
- double each_microsec;
- double each_clock;
-
- if (B_BPEEK((void *)0x00e8e00b) == 0xdc) {
- /* X68030 */
- if (B_BPEEK((void *)0x0cbc) == 0x06) {
- /* 060turbo */
- mpu_clock = 50.0;
- } else {
- /* X68030/040turbo */
- mpu_clock = 25.0;
- }
- } else if (B_BPEEK((void *)0x00e8e00b) == 0xfe) {
- /* X68000 16MHz */
- mpu_clock = 16.667;
- } else {
- /* X68000 10MHz */
- mpu_clock = 10.0;
- }
-
- switch (argc) {
- case 3:
- sscanf(argv[2], "%lf", &mpu_clock);
- case 2:
- sscanf(argv[1], "%d", &count);
- break;
- default:
- fprintf(stderr, "使用法: %s ループ回数 [MPU_CLOCK(MHz)]\n", op_name);
- return;
- }
-
- ssp = B_SUPER(0);
- result = optime(op_main, op_init, op_tini, count);
- B_SUPER(ssp);
-
- if (result == -1) {
- fprintf(stderr, "%s: Timer-Dが使用中です\n", op_name);
- return;
- }
-
- each_microsec = result / (double)count;
- each_clock = each_microsec * mpu_clock;
-
- printf("[%s] total=%d(μs) count=%d each=%.4g(μs) each=%.4g(clock/%.4gMHz)\n",
- op_name, result, count, each_microsec, each_clock, mpu_clock);
- }
-